#include <time.h>

#include "Timestamp.h"

Timestamp::Timestamp() : microSecondsSinceEpcch_(0) { }

Timestamp::Timestamp(int64_t microSecondsSinceEpcch)
    : microSecondsSinceEpcch_(microSecondsSinceEpcch)
    {}
    
Timestamp Timestamp::now()
{
    return Timestamp(time(NULL));
}

/*
格式化字符串 "%4d/%02d/%02d %02d:%02d:%02d" 定义了输出的格式。这里日期和时间的格式是 年/月/日 时:分:秒。
%4d 表示输出至少占4位的整数，如果不足4位将用空格填充；%02d 表示输出至少占2位的整数，如果不足2位将用0填充。
tm_time->tm_year + 1900：tm 结构体中的 tm_year 成员存储的是年份减去1900的结果，因此这里需要加回1900来获取当前年份。
tm_time->tm_mon + 1：tm 结构体中的 tm_mon 成员表示月份，从0开始计数（0代表1月），因此这里需要加1来获取正确的月份。
*/
std::string Timestamp::toString() const
{
    char buf[128] = {0};
    tm *tm_time = localtime(&microSecondsSinceEpcch_);
    snprintf(buf, 128, "%4d/%02d/%02d %02d:%02d:%02d",
        tm_time->tm_year + 1900,
        tm_time->tm_mon + 1,
        tm_time->tm_mday,
        tm_time->tm_hour,
        tm_time->tm_min,
        tm_time->tm_sec);
    return buf;
}


// int main(){
//     Timestamp ti(time(NULL));
//     std::cout << ti.toString() << std::endl; 
//     return 0;
// }